// 存储token的key
const TOKEN_KEY = 'xuetang_token'
// 存储用户信息的key
const USER_INFO_KEY = 'xuetang_user_info'
// 存储微信用户信息的key
const USER_PROFILE_KEY = 'userProfile'

// 获取token
export const getToken = () => {
  return uni.getStorageSync(TOKEN_KEY)
}

// 设置token
export const setToken = (token) => {
  uni.setStorageSync(TOKEN_KEY, token)
}

// 移除token
export const removeToken = () => {
  uni.removeStorageSync(TOKEN_KEY)
}

// 获取用户信息
export const getUserInfo = () => {
  const userInfo = uni.getStorageSync(USER_INFO_KEY)
  return userInfo || null
}

// 获取微信用户档案信息
export const getUserProfile = () => {
  const userProfile = uni.getStorageSync(USER_PROFILE_KEY)
  return userProfile || null
}

// 设置用户信息
export const setUserInfo = (userInfo) => {
  if (!userInfo) return
  
  // 确保userInfo是对象
  const userInfoObj = typeof userInfo === 'string' ? JSON.parse(userInfo) : userInfo
  
  // 同步更新微信用户信息存储
  const userProfile = uni.getStorageSync(USER_PROFILE_KEY) || {}
  
  // 如果后端返回的用户信息包含nickname和avatar
  if (userInfoObj.nickname || userInfoObj.avatar) {
    // 更新userProfile中的对应字段
    if (userInfoObj.nickname) userProfile.nickName = userInfoObj.nickname
    if (userInfoObj.avatar) userProfile.avatarUrl = userInfoObj.avatar
    
    // 保存更新后的userProfile
    uni.setStorageSync(USER_PROFILE_KEY, userProfile)
  }
  
  // 反之，如果userProfile中包含头像和昵称，但userInfoObj中没有
  if ((userProfile.nickName || userProfile.avatarUrl) && 
      (!userInfoObj.nickname || !userInfoObj.avatar)) {
    // 更新userInfoObj中的对应字段
    if (userProfile.nickName && !userInfoObj.nickname) userInfoObj.nickname = userProfile.nickName
    if (userProfile.avatarUrl && !userInfoObj.avatar) userInfoObj.avatar = userProfile.avatarUrl
  }
  
  // 保存用户信息
  uni.setStorageSync(USER_INFO_KEY, userInfoObj)
  
  // 如果是首次登录，显示欢迎提示
  if (userInfoObj.isNewUser) {
    setTimeout(() => {
      uni.showToast({
        title: '欢迎使用糖护卫',
        icon: 'none',
        duration: 2000
      })
    }, 500)
  }
  
  console.log('用户信息已保存', userInfoObj)
  return userInfoObj
}

// 更新用户头像
export const updateUserAvatar = (avatarUrl) => {
  if (!avatarUrl) return false
  
  try {
    // 更新userProfile
    const userProfile = uni.getStorageSync(USER_PROFILE_KEY) || {}
    userProfile.avatarUrl = avatarUrl
    uni.setStorageSync(USER_PROFILE_KEY, userProfile)
    
    // 更新userInfo
    const userInfo = getUserInfo()
    if (userInfo) {
      userInfo.avatar = avatarUrl
      uni.setStorageSync(USER_INFO_KEY, userInfo)
    }
    
    return true
  } catch (e) {
    console.error('更新头像失败:', e)
    return false
  }
}

// 更新用户昵称
export const updateUserNickname = (nickname) => {
  if (!nickname) return false
  
  try {
    // 更新userProfile
    const userProfile = uni.getStorageSync(USER_PROFILE_KEY) || {}
    userProfile.nickName = nickname
    uni.setStorageSync(USER_PROFILE_KEY, userProfile)
    
    // 更新userInfo
    const userInfo = getUserInfo()
    if (userInfo) {
      userInfo.nickname = nickname
      uni.setStorageSync(USER_INFO_KEY, userInfo)
    }
    
    return true
  } catch (e) {
    console.error('更新昵称失败:', e)
    return false
  }
}

// 移除用户信息
export const removeUserInfo = () => {
  uni.removeStorageSync(USER_INFO_KEY)
  uni.removeStorageSync(USER_PROFILE_KEY)
}

// 检查是否已登录
export const isLoggedIn = () => {
  return !!getToken()
}

// 清除所有登录信息
export const clearLoginInfo = () => {
  removeToken()
  removeUserInfo()
} 